<?php
declare (strict_types = 1);

namespace app\business;

use app\lib\Num;

class Sms {

    public static function sendCode(string $tel, int $length = 4, string $type = "aliyun"): bool {

        // 短信在cache中还没有失效，就无法重复发送短信
        if (cache("?" . config("redis.code_pre").$tel)) {
            return false;
        }


        $code = Num::getCode($length); //6位随机整数

        // 工厂模式去解决不同运营商的短信发送
        //$type = ucfirst($type);
        //$className = "\\app\\lib\\sms\\" . $type . "Sms";
        $className = config("sms." . $type);
        if (empty($className)) {
            return false;
        }

        if ($className::sendCode($tel, $code)) {
            //发送成功，把code写入到redis中,并设置发送时间，以及失效时间
            cache(config("redis.code_pre").$tel, $code, config("redis.code_expire_time"));
            return true;
        }

        return false;
    }



}